package com.copa.gameStore.application;

import com.copa.gameStore.domain.User;
import com.copa.gameStore.domain.UserAccount;
import com.copa.gameStore.dto.UserDto;
import com.copa.gameStore.vo.ResponseVo;
import com.copa.gameStore.vo.UserVo;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author copa
 * @createDate 2022-10-20 17:15
 * @function
 */
public interface UserApplicationService {

    List<String> roleNameByUserId(Long userId);

    User findByUsername(String username);

    ResponseVo<User> register(UserDto userDto);

    ResponseVo<String> put(UserDto userDto);

    UserVo userInfo(String authorization);

    ResponseVo<UserAccount> account();

    void takeAccount(BigDecimal money, UserAccount account);

    UserAccount accountByUserId(Long userId);

    ResponseVo<String> resetPassword(String username);

    ResponseVo<String> recharge(String username, BigDecimal money);

    ResponseVo<UserVo> get();

    ResponseVo<User> getUser(Long id);
}
